package com.eisula.sc.database;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;
import org.hibernate.annotations.Proxy;

@Entity
@Table(name = "t_vivienda")
@Proxy(lazy = false)
public class Vivienda {

	private int id;
	private String direccion;
	private String numero;
	private String nombre;
	private String tipoEstructura;
	private String materialParedes;
	private String materialTecho;
	private String materialPiso;
	private String tenencia;
	private String ubicacionCocina;
	private String combustibleCocina;
	private int numeroCuartos;
	private String servicioAgua;
	private String servicioSanitario;
	private boolean servicioElectrico;
	private String servicioRecoleccionBasura;
	private boolean seAjustaGrupoFamiliar;
	private String tipoSector;
	private String zonaRiesgo;
	private boolean posibilidadAmpliacion;
	private int cantidadPersonas;
	private boolean gastosSeparados;
	private int gruposGastosPersonas;

	private List<ViviendaMision> viviendaMisionList;
	private List<Mejora> mejoraList;
	private List<Hogar> hogarList;
	private Telefono telefonoId;

	// --------------------------------------------------------------------------------

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	// --------------------------------------------------------------------------------

	public String getDireccion() {
		return direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	// --------------------------------------------------------------------------------

	@Column(nullable = true)
	public String getNumero() {
		return numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}

	// --------------------------------------------------------------------------------

	@Column(nullable = true)
	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	// --------------------------------------------------------------------------------

	public String getTipoEstructura() {
		return tipoEstructura;
	}

	public void setTipoEstructura(String tipoEstructura) {
		this.tipoEstructura = tipoEstructura;
	}

	// --------------------------------------------------------------------------------

	public String getMaterialParedes() {
		return materialParedes;
	}

	public void setMaterialParedes(String materialParedes) {
		this.materialParedes = materialParedes;
	}

	// --------------------------------------------------------------------------------

	public String getMaterialTecho() {
		return materialTecho;
	}

	public void setMaterialTecho(String materialTecho) {
		this.materialTecho = materialTecho;
	}

	// --------------------------------------------------------------------------------

	public String getMaterialPiso() {
		return materialPiso;
	}

	public void setMaterialPiso(String materialPiso) {
		this.materialPiso = materialPiso;
	}

	// --------------------------------------------------------------------------------

	public String getTenencia() {
		return tenencia;
	}

	public void setTenencia(String tenencia) {
		this.tenencia = tenencia;
	}

	// --------------------------------------------------------------------------------

	public String getUbicacionCocina() {
		return ubicacionCocina;
	}

	public void setUbicacionCocina(String ubicacionCocina) {
		this.ubicacionCocina = ubicacionCocina;
	}

	// --------------------------------------------------------------------------------

	public String getCombustibleCocina() {
		return combustibleCocina;
	}

	public void setCombustibleCocina(String combustibleCocina) {
		this.combustibleCocina = combustibleCocina;
	}

	// --------------------------------------------------------------------------------

	public int getNumeroCuartos() {
		return numeroCuartos;
	}

	public void setNumeroCuartos(int numeroCuartos) {
		this.numeroCuartos = numeroCuartos;
	}

	// --------------------------------------------------------------------------------

	public String getServicioAgua() {
		return servicioAgua;
	}

	public void setServicioAgua(String servicioAgua) {
		this.servicioAgua = servicioAgua;
	}

	// --------------------------------------------------------------------------------

	public String getServicioSanitario() {
		return servicioSanitario;
	}

	public void setServicioSanitario(String servicioSanitario) {
		this.servicioSanitario = servicioSanitario;
	}

	// --------------------------------------------------------------------------------

	public boolean isServicioElectrico() {
		return servicioElectrico;
	}

	public void setServicioElectrico(boolean servicioElectrico) {
		this.servicioElectrico = servicioElectrico;
	}

	// --------------------------------------------------------------------------------

	public String getServicioRecoleccionBasura() {
		return servicioRecoleccionBasura;
	}

	public void setServicioRecoleccionBasura(String servicioRecoleccionBasura) {
		this.servicioRecoleccionBasura = servicioRecoleccionBasura;
	}

	// --------------------------------------------------------------------------------

	public boolean isSeAjustaGrupoFamiliar() {
		return seAjustaGrupoFamiliar;
	}

	public void setSeAjustaGrupoFamiliar(boolean seAjustaGrupoFamiliar) {
		this.seAjustaGrupoFamiliar = seAjustaGrupoFamiliar;
	}

	// --------------------------------------------------------------------------------

	public String getTipoSector() {
		return tipoSector;
	}

	public void setTipoSector(String tipoSector) {
		this.tipoSector = tipoSector;
	}

	// --------------------------------------------------------------------------------

	public String getZonaRiesgo() {
		return zonaRiesgo;
	}

	public void setZonaRiesgo(String zonaRiesgo) {
		this.zonaRiesgo = zonaRiesgo;
	}

	// --------------------------------------------------------------------------------

	public boolean isPosibilidadAmpliacion() {
		return posibilidadAmpliacion;
	}

	public void setPosibilidadAmpliacion(boolean posibilidadAmpliacion) {
		this.posibilidadAmpliacion = posibilidadAmpliacion;
	}

	// --------------------------------------------------------------------------------

	public int getCantidadPersonas() {
		return cantidadPersonas;
	}

	public void setCantidadPersonas(int cantidadPersonas) {
		this.cantidadPersonas = cantidadPersonas;
	}

	// --------------------------------------------------------------------------------

	@Column(nullable = true)
	public boolean isGastosSeparados() {
		return gastosSeparados;
	}

	public void setGastosSeparados(boolean gastosSeparados) {
		this.gastosSeparados = gastosSeparados;
	}

	// --------------------------------------------------------------------------------

	@Column(nullable = true)
	public int getGruposGastosPersonas() {
		return gruposGastosPersonas;
	}

	public void setGruposGastosPersonas(int gruposGastosPersonas) {
		this.gruposGastosPersonas = gruposGastosPersonas;
	}

	// --------------------------------------------------------------------------------

	@OneToMany(mappedBy = "viviendaId", orphanRemoval = true)
	@LazyCollection(LazyCollectionOption.TRUE)
	public List<ViviendaMision> getViviendaMisionList() {
		return viviendaMisionList;
	}

	public void setViviendaMisionList(List<ViviendaMision> viviendaMisionList) {
		this.viviendaMisionList = viviendaMisionList;
	}

	// --------------------------------------------------------------------------------

	@OneToMany(mappedBy = "viviendaId", orphanRemoval = true)
	@LazyCollection(LazyCollectionOption.TRUE)
	public List<Mejora> getMejoraList() {
		return mejoraList;
	}

	public void setMejoraList(List<Mejora> mejoraList) {
		this.mejoraList = mejoraList;
	}

	// --------------------------------------------------------------------------------

	@OneToMany(mappedBy = "viviendaId", orphanRemoval = true)
	@LazyCollection(LazyCollectionOption.TRUE)
	public List<Hogar> getHogarList() {
		return hogarList;
	}

	public void setHogarList(List<Hogar> hogarList) {
		this.hogarList = hogarList;
	}

	// --------------------------------------------------------------------------------

	@OneToOne
	public Telefono getTelefonoId() {
		return telefonoId;
	}

	public void setTelefonoId(Telefono telefonoId) {
		this.telefonoId = telefonoId;
	}

	// --------------------------------------------------------------------------------

}
